package com.cn.wanxi.thread;

public class MySynchronized {
    public static void main(String[] args) {
// 男女朋友面对面在坐着准备吃饭，但是桌子两端各只有一只筷子，只有都拿到两只筷子才能吃饭A和B筷子
        new Thread(new Runnable() {
            @Override
            public void run() {
//                try {
//                    Thread.sleep(100);
//                } catch (InterruptedException e) {
//                    e.printStackTrace();
//                }public class ThreadOne extends Thread {
//public void run() {
//System.out.println("线程1开始跑");
//ThreadTwo threadTwo = new ThreadTwo();
//threadTwo.start();
//try {
//threadTwo.join(1000);//join里面如果没有参数，则另一个线程执行完成以后再执行本线程。
////join里面如果有参数，则表示当前线程愿意等待的时间，如果时间小于另一个线程的时间，则到时间后不需等待，直接执行
//} catch (InterruptedException e) {
//e.printStackTrace();
//}
//System.out.println("线程1结束跑");
//}
//}
                synchronized ("A") {
                    System.out.println(Thread.currentThread().getName() + "拿到A筷子了");
                    synchronized ("B") {
                        System.out.println(Thread.currentThread().getName() + "拿到A筷子,同时拿到B筷子，可以吃饭了");
                    }
                }
            }
        }, "男朋友").start();
        new Thread(new Runnable() {
            @Override
            public void run() {
                synchronized ("B") {
                    System.out.println(Thread.currentThread().getName() + "拿到B筷子了");
                    synchronized ("A") {
                        System.out.println(Thread.currentThread().getName() + "拿到B筷子,同时拿到A筷子，可以吃饭了");
                    }
                }
            }
        }, "女朋友").start();
    }
}